ICCV2021:阿里达摩院将Transformer应用于目标重识别,效果显著(附源代码)
计算机视觉研究院专栏
作者:Edison_G
阿里达摩院和浙江大学合作的TransReID框架。成功将Pure Transformer架构应用于目标重识别ReID任务,效果超过了当前先进方法的性能!文章2021年5月刚出来,也入选了顶会ICCV2021!
前言
背景
目标重识别(ReID)与跟踪(Tracking)有什么区别?
从任务的角度来看,两者最主要的区别如下:
目标重识别:给定一张切好块的行人图像 (probe image, 即图像大部分内容只包含这个人), 从一大堆切好块的图像 (gallery images) 中找到跟probe image中同一身份的人的图像。这些图像通常是由不同摄像头拍摄的不连续帧。
跟踪:给定一张切好块的行人图像 (probe image), 从一段全景视频 (panorama track, 视野中只有一小部分是这个行人) 中找到 probe 所在的位置。这段全景视频是由单个摄像头拍摄的连续帧。
在视频监控领域,最终目标是要做到多目标跨摄像头跟踪 (Multi-target Multi-camera Tracking, 简称MTMC Tracking)。而目标重识别和行人跟踪都是为了达到这个最终目标的子任务。
今天我们具体来说说目标重识别。通过回顾基于CNN的方法,我们发现了两个在目标重识别领域没有得到很好解决的重要问题。
(1) 在全局范围内利用丰富的结构模式对于目标重识别至关重要。然而,由于感受野存在一个高斯核的衰减,基于CNN的方法主要关注小的判别区域。最近,已经引入了注意力模块 来探索远程依赖关系,但其中大部分都嵌入在深层中,并没有解决CNN的原理问题。因此,基于注意力的方法仍然更喜欢大的连续区域,并且难以提取多个多样化的判别部分(见下图 1)
(a) Original images, (b) CNN-based methods, (c) CNN+attention methods, (d) Transformer-based methods
(2) 具有详细信息的细粒度特征也很重要。然而,CNN的下采样算子(例如池化和跨步卷积)降低了输出特征图的空间分辨率,这极大地影响了区分具有相似外观目标的能力。如下图所示,基于CNN的特征图丢失了背包的细节,难以区分两个人。
如上图中的这对负样本对(CNN识别错误,Transformer识别正确),两张图片的外观特征是非常相似的,但是从书包的细节可以看出,左边书包侧面有一个杯子,而右边书包侧面则没有杯子,因此可以判断是两个ID。但是因此CNN的下采样操作,在网络最后输出的特征图上已经看不清杯子这个细节了。但是Transformer没有下采样操作,因此特征图能够比较好地保留细节信息,从而识别目标。
新框架
具体来说,研究者首先将图像编码为一系列补丁,并通过一些关键改进构建基于transformer的强基线,这在使用基于CNN的方法的多个ReID基准测试中取得了有竞争力的结果。为了进一步增强transformer上下文中的稳健特征学习,精心设计了两个新颖的模块。
(i) Jigsaw Patch Module (JPM) 被提出通过移位和补丁混洗操作重新排列补丁嵌入,从而生成具有改进识别能力和更多样化覆盖范围的鲁棒特征。
(ii) Side Information Embeddings (SIE) 以通过插入可学习的嵌入来合并这些非视觉线索来减轻对相机/视图变化的特征偏差。
据我们所知,这是第一项采用纯transformer进行ReID研究的工作。TransReID的实验结果非常有前途,在人和车辆ReID基准测试中都达到了最先进的性能。
Transformer-based strong baseline
研究者参考CNN的baseline BoT设计Transformer-based strong baseline。如下图所示。
研究者参考ViT将图片分成N个patch,并引入一个额外的cls token共N+1个embedding。经过Transformer layers之后将cls token作为图像的全局特征,之后经过一个BNNeck结构计算triplet loss和分类ID loss。
此外,还有一个技巧性操作,是对图像进行patch分块的时候可以让相邻的patch之间有一定的overlap。当然这个操作会使得patch数目增加从而使得模型训练的资源消耗增加,但是性能也会有比较稳定提升。
ReID任务经常会遇到遮挡、不对齐这些问题,一般会采用细粒度的局部特征来处理这些问题,水平切块就是非常常用的一种局部特征方法。
为了扩大每个group的视野,研究者将所有的patch embedding按照一定规则进行打乱,然后再进行分组。这样每个group就可能包含来自图片不同区域的patch,近似等效于每个group都有比较全局的感受野。
具体打乱操作分为两步:
Side Information Embeddings
ReID任务中相机、视角的差异会给图像带来一些外观上的差异。对于CNN框架,通常需要专门设计结构来处理这个问题,例如设计loss、对数据进行先验处理、改变模型结构等等。这些设计通常比较定制化且比较复杂,推广性并不强。而transformer则比较擅长融合不同模态的信息,因此研究者提出了SIE模块来利用相机ID、视角等辅助信息。
实验及分析
论文中使用的数据集的统计数据
不同Backbone的对比
下表给出了不同Backbone的准确度和推理时间的对比,将ResNet50作为baseline,同时给出了ViT和DeiT的结果。
可以看到,DeiT-S/16在速度上与ResNet50是接近的,在准确度上同样也有可比的性能。当使用更深的DeiT-B/16和DeiT-V/16时,同样和ResNest50取得了相似的速度和准确度。当在pre-patch环节缩小conv的stride时,patch的数目增加,速度下降,但是准确度也会收获稳定的提升。
和SOTA对比
下表给出了和SOTA方法对比的结果。
可以看到,和CNN的方法相比,TransReID在六个ReID数据集上取得了更好的准确度,这显示了pure transformer架构在图像检索任务上同样适用。在ImageNet上取得更好分数的DeiT在下游的ReID任务上并没有超过ViT。这是因为ViT使用了更大的ImageNet22K做预训练,更大的预训练数据使得ViT有更好的迁移性。
可视化
(a) Input images, (b) Baseline, (c) JPM w/o rearrange, (d) JPM.
© THE END
转载请联系本公众号获得授权
计算机视觉研究院学习群等你加入!
扫码关注
计算机视觉研究院
公众号ID|ComputerVisionGzq
学习群|扫码在主页获取加入方式
往期推荐
🔗